package com.sgb.net.util;


import org.jetbrains.annotations.NotNull;

import io.reactivex.Observer;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;

/**
 * @author: 杨畔
 * @date: 2021/2/19 17:16
 * @Description: 公共网络请求结果处理
 */
public abstract class IObserver<T> implements Observer<T> {
    @Override
    public void onSubscribe(@NonNull Disposable d) {

    }

    @Override
    public void onNext(T t) {
        try {
            onNextTryCatch(t);
        } catch (Exception e) {
            onError(e);
        }
    }

    protected abstract void onNextTryCatch(T t);

    @Override
    public void onError(@NotNull Throwable t) {
        errorHandle(t);
    }

    @Override
    public void onComplete() {

    }

    /**
     * 统一错误处理
     */
    private void errorHandle(Throwable t) {
        //todo 异常处理
    }
}
